/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package almacenmeta;

import java.io.File;

/**
 *
 * @author eneko
 */
public class HandlerDirectorio {

    private String directorioBase;

    public HandlerDirectorio(String directorioBase)
    {
        this.directorioBase=directorioBase;
    }

    public String getBase()
    {
        return directorioBase;
    }

    public String preparaRuta(String ruta)
    {
       return ruta.replace("/","//");
    }

   /**
   * Crea un directorio en el directorio actual.
   *
   * @param String  Nombre del directorio a crear.
   */
    
    public boolean crearDirectorio(String nombre)
    {

        //Añadir barras a la base para que no haga referencia a una secuencia de escape.
        boolean status=false;
        File f=new File(preparaRuta(getBase())+("//"+nombre));

        try{
            status=f.mkdirs();
        }
        catch(SecurityException ex){
            ex.printStackTrace();
        }

        if(status==true){
                System.out.println("Directorio creado correctamente");
                return status;
            }
            else
                return false;
    }

   /**
   * Crea un directorio en el directorio actual.
   *
   * @param String  Nombre del directorio a crear.
   * @param String  Nombre del directorio donde queremos crear otro directorio.
   */

    public boolean crearDirectorio(String nombre,String donde)
    {

        //Añadir barras a la base para que no haga referencia a una secuencia de escape.
        File f=new File(preparaRuta(donde)+("//"+nombre));
        boolean status=false;

        try{
            status=f.mkdirs();
        }
        catch(SecurityException ex){
            ex.printStackTrace();
        }

        if(status==true){
                System.out.println("Directorio creado correctamente");
                return status;
            }
            else
                return false;
    }

   /**
   * Borra un directorio en el directorio en el directorio actual.
   *
   * @param String  Nombre del directorio a crear.
   */

   public boolean borrarDirectorio(String nombre)
   {

       File f=new File(preparaRuta(getBase())+("//"+nombre));
       boolean status=false;

       try{
           status=f.delete();
       }
       catch(SecurityException ex){
           ex.printStackTrace();
       }

       if(status==true){
                System.out.println("Directorio borrado correctamente");
                return status;
            }
            else
                return status;
   }

   /**
   * Borra un directorio en el directorio en el directorio indicado.
   *
   * @param String  Nombre del directorio a crear.
   */

   public boolean borrarDirectorio(String nombre,String donde)
   {

       File f=new File(preparaRuta(donde)+("//"+nombre));
       boolean status=false;

       try{
           status=f.delete();
       }
       catch(SecurityException ex){
           ex.printStackTrace();
       }

       if(status==true){
                System.out.println("Directorio borrado correctamente");
                return status;
            }
            else
                return status;
   }

   /**
   * Lista todos los directorios y ficheros del directorio actual.
   *
   */

   public String[] listar()
   {
        File f=new File(preparaRuta(getBase()));
        String directorios[]=null;

        try{
           directorios=f.list();
        }
        catch(SecurityException ex){
           ex.printStackTrace();
        }


        if(directorios==null)
            return null;
        else{
            //Imprimir el conjunto de subdirectorios encontrados.
            for(String elemento:directorios){
                System.out.println(elemento);
            }
            return directorios;
        }
   }

   public String [] listar(String ruta){
        String [] listaficheros;
        //int i;
        File directorio =new File(ruta);

        listaficheros=directorio.list();
        /*for(i=0;i<listaficheros.length;i++){
            System.out.println(listaficheros[i]);
        }*/
        return listaficheros;

    }

   /**
   * Borra todos los directorios y ficheros del directorio especificado.
   * Hay que tener en cuenta que el método delete de la clase File sólo borra
   * directorios vacíos, así que habrá que borrar los archivos que haya antes de
   * borrar el directorio.
   * @param directorio Ruta del directorio a limpiar.
   */

   public void borrarTodo(File directorio)
   {
       File [] arrayDir = directorio.listFiles();
       
       for(File dir:arrayDir)
       {
            if (dir.isDirectory()) {
            borrarTodo(dir);
            }
            dir.delete();
       }

   }

   public String[] fragmenta_fich(){

       String[] lista = listar(getBase());
       String[] nombres = new String[2];

        for(int i=0;i<lista.length;i++){
            if (lista[i].endsWith(".txt")){
                System.out.println("\nORIGINAL: "+lista[i]);
                int posicion = lista[i].indexOf("-");
                String carpeta = lista[i].substring(0,posicion);
                nombres[0] = carpeta;
                String nom_let = lista[i].substring(posicion+1);
                nombres[1] = nom_let;
                System.out.println("\tCARPETA: "+nombres[0]);
                System.out.println("\tFICHERO LETRAS: "+nombres[1]+"\n");
                lista[i].replace(".txt","");
            }
        }
       return nombres;
   }

   public static void main(String args[]){
       /*HandlerDirectorio hd=new HandlerDirectorio("/media/TRANS-IT/UPNA09-10/C2/ASO/Almacen-metadatos/src/almacenmeta/");
       File f=new File("/media/TRANS-IT/UPNA09-10/C2/ASO/Almacen-metadatos/src/almacenmeta/prueba/");
       hd.borrarTodo(f);*/
       HandlerDirectorio hd=new HandlerDirectorio("./Recolector");
       hd.fragmenta_fich();
   }
}
